Complex computer systems, such as e-commerce systems, may include web-servers, file servers, databases, billing servers, etc. Other examples of complex computer systems are Enterprise Resource Planning (ERP) systems, Enterprise Application Integration (EAI) systems, other enterprise applications, distributed applications, infrastructure and telecommunication applications, and many more. Because of their complexity, such computer systems need continued attention from qualified persons to ensure error-free and efficient operation.
The complexity of the system makes errors and possible inefficiencies more likely to occur and harder to find, once they have occurred. As a result, maintenance of these systems can be challenging and time consuming. One aspect of the maintenance of such complex systems is monitoring the performance of all the applications that make up the system.
Computer systems often provide the ability for a person to check various information associated with such systems. This information may include status, throughput, performance, configuration, business, accuracy, availability, security, utilization, geographical, and usability information. This type of information is referred to as monitoring information. Some examples on how monitoring information can be accessed remotely are:                applications, devices, or operating systems may provide their monitoring information by making use of certain operating system services specifically designed for this purpose. For example, the SNMP agent service or Microsoft's remote registry are designed for being accessed remotely;        custom tools provided by an operating system or an application, such as command line tools;        custom services/daemons implemented by some applications or devices that can be accessed locally as well as remotely, such as dynamically generated WebPages which contain HTML formatted monitoring information;        an application or device may be shipped with tools that query this application or device once it is deployed, and return monitoring information, usually in a non-standardized format;        a network router or switch may provide monitoring information, such as network traffic statistics, via SNMP;        a computer may be configured to continuously produce files containing monitoring information pertaining to the system;        a database may provide monitoring information through standard database-client interfaces such as OCI (Oracle Calling Interface) or ODBC (Open DataBase Connectivity);        
In a more specific example, a user may be interested in measuring the utilization of a system's CPU(s). On Microsoft Windows platforms, the user would have to launch a Microsoft specific GUI tool, pick out of a large number of monitoring information options the one which allows the user to query a Microsoft specific service for accessing this kind of utilization information. On other systems it would suffice to execute a command line tool, which produces a tabular text output containing each CPU's utilization. Such tools can be utilized from remote locations and the tabular text output can be transferred back to the caller. For example, Sun operating systems feature the command line tool “mpstat”, which provides CPU utilization information. The “mpstat” tool can be remotely executed by using the REXEC protocol, a commonly used remote execution protocol in Sun operating systems and other UNIX operating systems. Thus, in order to remotely retrieve the CPU utilization information from a SunOS powered host a user would need to:                connect to the host on port 512 using the REXEC protocol (port 512 is the default connection point of the REXEC protocol);        remotely execute a tool named “mpstat” via REXEC;        produce tabular text output;        find the needed utilization information in the tabular output.        
A monitoring information service (service) is a service, daemon, tool or any other interface that is able to provide monitoring information concerning a particular computer system. However, these services are not standardized and may be very different for different computer systems. Often a computer system provides monitoring information in such a manner that a user must be very well versed in the configuration of the hardware devices as well as the software applications running on the devices, in order to access this information. Although some tools for collecting and analyzing monitoring information are available, usually these tools must be manually configured to indicate the location of the needed information and/or how to extract it. They are thus inefficient and difficult to use.